
#define OosEnumGetter(type, getter, position) \
+ (type) getter \
{ \
	return (type) [self enumForPosition: position]; \
}

// TODO: Comment

#define OosEnumDictionary(name) \
+ (NSDictionary *) enums \
{ \
    if (!name##Dictionary) { \
        name##Dictionary = [[[NSMutableDictionary alloc] initWithCapacity:name##Values.count] retain]; \
    } \
	return name##Dictionary; \
}

// TODO: Comment

#define OosEnumValues(name, ...) \
static NSArray *name##Values; \
static NSMutableDictionary *name##Dictionary; \
+ (NSArray *) values \
{ \
	if (!name##Values) { \
		name##Values = [[[NSArray alloc] initWithObjects: __VA_ARGS__, nil] retain]; \
	} \
return name##Values; \
}

